package cn.changein.framework.kernel.model.exception.enumeration;

import cn.changein.framework.kernel.model.exception.AbstractBaseExceptionEnum;

/**
 * <p>
 * core模块的异常集合
 * </p>
 *

 * @Date: 2020-10-27 11:40
 * @Copyright: companyName
 * @Version 1.0
 * @Since JDK1.8
 */
public enum CoreExceptionEnum implements AbstractBaseExceptionEnum {

    /**
     * 其他
     */
    INVLIDE_DATE_STRING(400, "输入日期格式不对"),

    /**
     * 初始化数据库的异常
     */
    NO_CURRENT_USER(700, "当前没有登录的用户"),
    INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库，存在为空的字段"),

    /**
     * 其他
     */
    WRITE_ERROR(500, "渲染界面错误"),
    ENCRYPT_ERROR(600, "加解密错误"),

    /**
     * 文件上传
     */
    FILE_READING_ERROR(400, "FILE_READING_ERROR!"),
    FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"),

    /**
     * 数据库字段与实体字段不一致
     */
    FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"),

    /**
     * 错误的请求
     */
    PAGE_NULL(404, "请求页面不存在"),
    IO_ERROR(500, "流读取异常"),
    SERVICE_ERROR(500, "服务器异常"),
    REMOTE_SERVICE_NULL(404, "远程服务不存在"),
    ASYNC_ERROR(5000, "数据在被别人修改，请稍后重试"),

    /****会员模块 以100000开头****/
    MEMBER_PHONE_IS_NULL(100000, "手机号不能为空"),
    MEMBER_PHONE_EXISTED_REGISTER(100005, "手机号已经注册过了"),
    MEMBER_SOURCE_IS_NULL(100010, "会员来源不能为空"),
    MEMBER_NAME_IS_NULL(100015, "姓名不能为空"),
    MEMBER_IS_NULL(100020, "会员不存在,请先去注册"),
    MEMBER_NOT_LOGIN(100025, "你还未登录,请先去登录"),

    /****短信模块 以200000开头****/
    SMS_CODE_TYPE_IS_NULL(200000, "验证码类型不能为空"),
    SMS_CODE_TYPE_INPUT_ERROR(200005, "验证码输入有误"),
    SMS_CODE_TYPE_NOT_EXPIRE(200010, "验证码还没过期"),
    SMS_CODE_TEMPLATE_NOT_EXIST(200015, "未找到配置的短信模板"),
    SMS_CODE_EXPIRED(200020, "验证码已过期"),
    SMS_CODE_IS_NULL(200025, "验证码不能为空"),
    SMS_CODE_INCORRECT(200030, "验证码不正确,请重新输入"),
    SMS_CODE_SEND_SUCCESS(200035, "验证码发送成功,请稍候查看"),

    /****其他模块 以900000开头****/
    TOKEN_NOT_EXIST(900000, "token不存在"),
    TOKEN_AUTHENTICATION_FAILED(900005, "token认证失败"),
    TOKEN_AUTHENTICATION_EXPIRED(900010, "token已过期,请重新登录"),
    PARAM_IS_NULL(900015, "参数不能为空"),
    ;

    CoreExceptionEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    private Integer code;

    private String message;

    @Override
    public Integer getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }

}

